import { defineConfig } from '@umijs/max';
import routes from './routes';
import defaultSettings from './defaultSettings';
import proxy from './proxy';

const PRIMARY_COLOR = '#2865FF';

// 根据环境加载不同的配置
const { NODE_ENV } = process.env;
let envConfig = {};
try {
  // 尝试加载环境特定的配置
  envConfig = require(`./config.${NODE_ENV}`).default;
} catch (e) {
  console.log(`No specific config for environment: ${NODE_ENV}`);
}

export default defineConfig({
  // 基础配置
  antd: {},
  access: {},
  define: {
    'process.env.primaryColor': PRIMARY_COLOR, // 主题色
  },
  model: {
    loading: true, // 启用 loading 插件
  },
  dva: {},
  
  // 构建优化配置
  mfsu: {
    development: {
      output: {
        buildFailOnError: false, // 构建错误时不退出
      },
    },
    production: {
      output: {
        buildFailOnError: true, // 生产环境构建错误时退出
      },
    },
  },
  
  // 打包优化配置
  hash: true, // 开启 hash 文件名，避免缓存问题
  targets: {
    chrome: 80,
    firefox: 80,
    safari: 13,
    edge: 80,
    ios: 10,
  },
  
  // 压缩配置
  jsMinifier: 'terser',
  jsMinifierOptions: {
    compress: {
      drop_console: true,  // 删除 console
      pure_funcs: ['console.log'] // 删除特定函数
    }
  },
  cssMinifier: 'cssnano',
  
  // 应用配置
  initialState: {},
  request: {},
  // title: '后台管理系统',
  layout: {
    locale: true,
    ...defaultSettings,
  },
  routes: routes,
  proxy: proxy.dev,
  npmClient: 'pnpm',
  fastRefresh: true,
  locale: {
    // default zh-CN
    default: 'zh-CN',
    baseSeparator: '-',
    antd: true,
    // default true, when it is true, will use `navigator.language` overwrite default
    // baseNavigator: true,
  },
  
  // 合并环境特定的配置
  ...envConfig,
});